Finalize a recordy

Otázka od: Lebeda David

13. 9. 2004 7:54

Ahoj,

v objektu je private promenna typu record, ten record obsahuje promenne typu
string
(bez uvedeni delky). Obcas potrebuji tento record vyprazdnit. Pouzivam k tomu
ZeroMemory, nicmene mi bylo poradeno, ze pro korektni uvolnovani je treba
pouzivat
Finalize. Mam D5 a z helpu k Finalize si nejsem uplne jisty, ze ho pouzivam
spravne.

Mam record
 TMyRec = record
    a: integer;
    b, c, d, e, f: string;
 end;

existuje promenna
  rec: TMyRec;

Postaci volani
  Finalize(rec);
  ZeroMemory(@rec, sizeof(rec));

nebo jsem to spatne pochopil? Vzhledem k tomu, ze ten record je v praxi pomerne

bohaty a navic by v pripade rozsireni recordu nemelo byt zapomenuto na
inicializaci i
novych pridanych prvku, nechci psat proceduru, kde vsechny polozky recordu
vyjmenuji
a priradim.

Diky.

David Lebeda


Odpovedá: delphin@post.cz

13. 9. 2004 10:22

> Postaci volani
> Finalize(rec);
> ZeroMemory(@rec, sizeof(rec));

Je to spravne. Finalize uvolni stavajici dlouhe stringy, varianty, interface
a dynamicke pole z pameti a ZeroMemory record inicializuje.
Misto ZeroMemory je pohodlnejsi pouzit Initialize, nemusi se psat delka.